package com.kexilo.system.audit.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kexilo.core.audit.domain.SysArchiveConfig;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 数据归档配置映射层
 *
 * @author Kexilo
 */
@Mapper
public interface SysArchiveConfigMapper extends BaseMapper<SysArchiveConfig> {

    /**
     * 查询归档配置列表
     *
     * @param config 归档配置
     * @return 配置列表
     */
    List<SysArchiveConfig> selectConfigList(SysArchiveConfig config);

    /**
     * 查询启用的归档配置
     *
     * @return 启用的配置列表
     */
    List<SysArchiveConfig> selectEnabledConfigs();

    /**
     * 根据表名查询配置
     *
     * @param tableName 表名
     * @return 归档配置
     */
    SysArchiveConfig selectByTableName(@Param("tableName") String tableName);

    /**
     * 批量更新配置状态
     *
     * @param configIds 配置ID数组
     * @param status 状态
     * @return 影响行数
     */
    int updateStatusBatch(@Param("configIds") Long[] configIds, @Param("status") String status);

    /**
     * 检查表名是否已存在
     *
     * @param tableName 表名
     * @param configId 配置ID（排除自己）
     * @return 数量
     */
    int checkTableNameExists(@Param("tableName") String tableName, @Param("configId") Long configId);
}
